#pragma once
#include "vectoroperations.h"

class Quaternion :
    public Vector3f
{
public:
    Quaternion(void);
    Quaternion(Vector3f vec);
    Quaternion(float x, float y, float z);
    Quaternion(float _w, Vector3f vec);
    Quaternion(float _w, float x, float y, float z);
    ~Quaternion(void);

    Quaternion rotateAround(Vector3f axis, float radians);

    Vector3f toVector3f();

    float normalize();
    float length();
    void inverse();

    Quaternion operator*(const Quaternion &quat2);
    Quaternion operator=(const Quaternion &quat);

    // Members
    float w, magnitude;
};

